<template>
  <div class="employees-container">
    <div class="app-container">
      <el-card shadow="always" :body-style="{ padding: '20px' }">
        <div slot="header">
          <span><!-- card title --></span>
        </div>
        <!-- card body -->
        <!--
          校验文件
          :before-upload="beforeUpload"
          校验通过后,获取读取到文件的数据
          :on-success="handleSuccess"
         -->
        <UploadExcel
          :before-upload="beforeUpload"
          :on-success="handleSuccess"
        ></UploadExcel>
      </el-card>
    </div>
  </div>
</template>

<script>
// 导入excel时间格式化通用方法
import { formatExcelDate } from '@/utils/index.js'
// 导入后台接口
import { importEmployees } from '@/api/employees'
export default {
  methods: {
    // 读取选择的Excel文件之前会先执行这个校验函数
    // 用法
    beforeUpload (file) {
      console.log('上传之前校验', file)
      /*
      const isLt1M = file.size / 1024 / 1024 < 1
      if (isLt1M) {
        return true
      }
      */
      // 必须返回true才会继续执行
      return true
    },
    async handleSuccess ({ header, results }) {
      console.log(header, results)
      await importEmployees(this.transformResults(results))
      this.$message.success('导入员工数据成功')
      this.$router.back()
    },
    // 转换读取员工数据中文的属性=>转为英文的键
    /**
     * results转换的数据
     */
    transformResults (results) {
      // 中英对照
      const zhToken = {
        '入职日期': 'timeOfEntry',
        '聘用形式': 'formOfEmployment',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber',
        '部门': 'departmentName'
      }
      /**
       * 1.准备一个新数组
       * 2.循环外层数组=>中文key的员工数据[{姓名:'张三'}]
       * 3.循环里层中文key的员工数据{姓名:'张三'}
       *   获取中文key=>通过zhToken关系=>zhToken[key]
       * 4.返回新数组
       */
      const newArr = []
      results.forEach(item => {
        // item中文key的员工数据
        const newItem = {}
        for (const zhKey in item) {
          // 获取enKey英文属性
          const enKey = zhToken[zhKey]
          // 处理excel读取到的时间
          if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
            newItem[enKey] = formatExcelDate(item[zhKey], '-')
          } else {
            newItem[enKey] = item[zhKey]
          }
          // 放到新对象上并赋值
        }
        // push到新数据
        newArr.push(newItem)
      })
      return newArr
    }
  }
}
</script>

<style lang="scss" scoped>
</style>
